#ifndef BTNGROUP_H
#define BTNGROUP_H

#include <QWidget>
#include <QToolButton>
//
#include <QMap>
#include <QSignalMapper>

namespace Ui {
class btngroup;
}
//设置枚举类型
enum Page{MYFILE, SHARE, TRANKING, TRANSFER, SWITCHUSR};

class btngroup : public QWidget
{
    Q_OBJECT

public:
    explicit btngroup(QWidget *parent = nullptr);
    ~btngroup();

    //设置当前登陆的用户名
    void setUsrname(QString user);

public slots:
    // 按钮处理函数
    //void slotButtonClick(Page cur);
    void slotButtonClick(QString text);
    //设置要移动的窗口对象，在移动的窗口类中设置
    void setParent(QWidget *parent);

protected:
    //重绘
    void paintEvent(QPaintEvent *event);
    //鼠标点击获取位置信息
    void mousePressEvent(QMouseEvent *event);
    //鼠标移动窗口跟随移动
    void mouseMoveEvent(QMouseEvent* event);

signals:
    //发送信号给主窗口
    void sigMyFile();
    void sigShareList();
    void sigDownload();
    void sigTransform();
    void sigSwitchUser();
    //发送信号给主窗口
    void closeWindow();
    void minWindow();
    void maxWindow();

private slots:
    void on_btn_min_clicked();

    void on_btn_max_clicked();

    void on_btn_close_clicked();

private:
    Ui::btngroup *ui;

    QPoint m_pos;//获取位置信息
    QWidget* m_parent;//获取移动的窗口对象
    QSignalMapper* m_mapper;            // 声明指向 QSignalMapper 的指针，用于处理信号映射
    QToolButton* m_curBtn;              // 声明当前选中的按钮指针
    QMap<QString, QToolButton*> m_btns; // 声明一个按钮集合，存储按钮文本与对应按钮的映射关系
    QMap<Page, QString> m_pages;        // 声明一个页面映射，存储页面枚举与对应文本的映射关系

};

#endif // BTNGROUP_H
